/**
 * Created with IntelliJ IDEA.
 * Description:
 * user:likai
 * Date:2022-09-27
 * Time:9:32
 */
//抽象方法
    //抽象类不能实例化
    //abstract
    //抽象类最大的意义就是被继承
    //继承之后必须重写抽象类的抽象方法
    //抽象类继承抽象类不需要重写抽象类的方法
    //抽象类的方法不能是私有的
    //final和abstract是矛盾的，不能一起写
    //抽象类当中可以有构造方法，在子类调用时，可以实例化抽象类中的成员
abstract class A{
    public abstract void draw();
    int a;
    public  void draw1(){
        System.out.println(1);
    }
}
interface IC{
    public abstract void draw();
    //private void draw2();
    //成员变量默认是public abstract final修饰的,所以需要就地初始化
}
interface ID  {
    void draw1();
}
abstract class E implements IC,ID{
    @Override
    public void draw1() {
        System.out.println(1);
    }
}
class Rect implements IC{
    int c=1;
    @Override
    public void draw() {
        System.out.println(1);
    }
}
public class Test {
    //报错
    //IC c=new IC();
    public static void main(String[] args) {
        Rect rect=new Rect();
        rect.draw();
    }
}

//接口
//interface来修饰接口
//接口当中的成员方法不能有具体实现
//可以有静态方法
//成员方法默认是public abstract，成员变量默认是public abstract final修饰的
//可以创建静态方法，默认是public
//接口也不能实例化
//implements实现类和接口的链接，必须重写里面的抽象方法
//一个类可以实现多个接口，只能继承一个类，

//public class Test extends A{
//    @Override
//    public void draw() {
//        System.out.println(2);
//    }
//
//    public static void main(String[] args) {
//        Test test=new Test();
//        test.draw();
//        test.draw1();
//    }
//}



//Object是所有类的父类
//class C{
//    private void c(){
//        System.out.println(1);
//    }
//
//}
//class D extends C{
//    int a;
//}
//public class Test {
//    public static void main(String[] args) {
//        D d=new D();
//        C c=new C();
//
//    }
//}